/***********************************************
*	名称:gf框架中间件
*	说明:gf框架的中间件工具(先Use的会包裹后Use)
*	作者:钱纯净
************************************************/
package middle

import (
	"github.com/go-xorm/xorm"
	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/net/ghttp"
)

var db *xorm.Engine

//使用限制
//@limit,限制数量
func UseLimit(limit int) {
	defLimit = newLimit(limit)
	g.Server().Use(MiddlewareLimit)
}

//使用中间件接口检测
func UseRunTime(en *xorm.Engine) {
	db = en
	printErr(db.Sync2(new(RunTime), new(RunTimeLog)))
	g.Server().Use(MiddlewareRunTime)
}

//使用中间件跨域配置
func UseCors() {
	g.Server().Use(MiddlewareCors)
}

//频率限制中间件
func MiddlewareLimit(r *ghttp.Request) {
	defLimit.do()
	r.Middleware.Next()
	defLimit.done()
}

//接口检测中间件
func MiddlewareRunTime(r *ghttp.Request) {
	data := start(r)
	r.Middleware.Next()
	data.done()
}

//跨域配置中间件
func MiddlewareCors(r *ghttp.Request) {
	r.Response.CORSDefault()
	r.Middleware.Next()
}
